<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // let、const(声明变量)
    // let、const: 没有变量提升，必须先声明后使用
    // let、const: 同一作用域不能重复声明
    // let、const: 有块级作用域
    // let和const的区别
    // let定义变量，可以重新赋值
    // const 定义常量，声明时必须赋值，后续不可以重新赋值
    // const 定义引用类型变量，可以通过方法或属性修改内容，不可以给变量重新赋值

    let a
    a = ''
    a = true
    console.log(a)

    const b = []
    b.push(Math.random())
    const obj = {}
    obj.name = 111

    const f = function () {

    }
    f.aa = 100
    console.log(f.aa)


    // for(var i = 0; i < 5; i++) {
    //   setTimeout(() => {
    //     console.log(i)
    //   }, 0)
    // }


    // for(var i = 0; i < 5; i++) {
    //   (function(j) {
    //     setTimeout(() => {
    //       console.log(j)
    //     }, 1000)
    //   })(i)
    // }

    // for(let i = 0; i < 5; i++) {
    //   setTimeout(() => {
    //     console.log(j)
    //   }, 1000)
    // }

    // console.log(i)




    // let a = 111
    // if (true) {
    //   // 块级作用域
    //   let a = 'AAAA'
    //   console.log(a)
    // }
    // console.log(a)



    // var a = 100
    // {
    //   // 块级作用域
    //   var a = 'aaaa'
    //   console.log(a)
    // }
    // console.log(a)
    





    // let a = 100
    // function fn() {
    //   // 暂时性死区
    //   console.log(a)
    //   let a = 'aaaaa'
    //   console.log(a)
    // }
    // fn()



  








  </script>
</body>
</html>